using System;
using System.Collections.Generic;
using System.Text;
using System.EnterpriseServices;
using Servidor.persistencia;
using Servidor.cadastro;
using System.Runtime.InteropServices;

namespace Servidor.facades
{
    [EventTrackingEnabled(),
     Transaction(TransactionOption.NotSupported),
     Synchronization(SynchronizationOption.Required)]
    public class BibliotecaFacade : ServicedComponent
    {
        LivroDAO livroDAO;
      
        public BibliotecaFacade()
        {
        }

        public Livro buscarLivro(string nome)
        {
            livroDAO = new LivroDAO();
            Livro buscado = livroDAO.buscar(nome);
            HibernateUtil.commitTransaction();
            HibernateUtil.closeSession();
            return buscado;
        }

        public Livro buscarLivro(Int32 id)
        {
            livroDAO = new LivroDAO();
            Livro buscado = livroDAO.buscar(id);
            HibernateUtil.commitTransaction();
            HibernateUtil.closeSession();
            return buscado;
        }


        public bool salvarOuAtualizarLivro(Livro livro)
        {
            livroDAO = new LivroDAO();
            bool salvo = livroDAO.salvarOuAtualizar(livro);
            HibernateUtil.commitTransaction();
            HibernateUtil.closeSession();
            return salvo;
        }

        public bool deletarLivro(Livro livro)
        {
            livroDAO = new LivroDAO();
            bool deletado = livroDAO.deletar(livro);
            HibernateUtil.commitTransaction();
            HibernateUtil.closeSession();
            return deletado;
        }

        public IList<Livro> listarLivros(string nomeParcial)
        {
            livroDAO = new LivroDAO();
            IList<Livro> livros = livroDAO.listar(nomeParcial);
            HibernateUtil.commitTransaction();
            HibernateUtil.closeSession();
            return livros;
        }

        public Int32 proximoIdLivro()
        {
            livroDAO = new LivroDAO();
            Int32 proximoID = livroDAO.proximoId();
            HibernateUtil.commitTransaction();
            HibernateUtil.closeSession();
            return proximoID;
        }

    }

    
}
